既然是做遊戲,想必單機遊戲不會滿足於我的,所以就來研究了一下如何做一個雙向及時連線的小遊戲,socket 就是我在搜尋過程中找到的其中一個正解,就來跟大家稍微介紹一下,以及之後會結合socket 去做一個連線的五子棋
先來說一下,HTTP 協定雖然解決了很多網路傳輸的問題,但對於雙向傳輸並沒有做到真正的雙向綁定,什麼意思呢?在 HTTP 裡面,一定要 client 主動發請求給 server ,才能得到一個回傳,server 並不能主動發訊息給 client ,使用 HTTP 做的雙向傳輸其實是僞雙向,可能是 client 傳了一個訊息給 server 過了很久才回傳(讓你有錯覺是 server 主動向你傳送訊息),而就找到了 socket (其實有很多的傳輸協定,除了 HTTP 與 socket 外,還有想 FTP MQTT 藍牙 ... 這就不是本章的探討範圍了)
想要用 socket 來做遊戲,就要來稍微認識一下 socket 啦,我是透過這兩個來認識 socket 的
[週四寫程式系列] 來用socket.io做個即時互動的遊戲吧! 、 socket 官方網站,這邊就介紹一下我認識的 socket 與我有用到的語法:
socket的概念十分簡單,不管是 server 端或是 client 端,只要有人發送訊息給另一方(emit),另一方就要可以收(on),EX:
//client 想要發訊息給 server 接收一個訊息
//client
socket.on('message','Hello world')
//server
socket.emit('message',msg=>{
console.log(msg) // Hello world
})
// 這邊省略了前後端要做的前置,之後實作遊戲的時候會介紹
所有的訊息傳遞,最基本的就是透過這種方式去傳送,這樣是不是很簡單呢才怪,所以就可以透過這種方式去實作一個多人聊天室了( 某個 client 送訊息給 server -> server 接送後發給在同一個頻道的 client -> 所有 client 接收到訊息並渲染到畫面 -> 回到第一點)就是這種到模式,那這樣就可以將他實作到遊戲裡面了。